require('dotenv').config();
const mongoose = require('mongoose');
const { exportMongooseDocs } = require('./mockUsers');

// 连接数据库
const connectDB = async () => {
  try {
    await mongoose.connect(process.env.MONGODB_URI, {
      useNewUrlParser: true,
      useUnifiedTopology: true
    });
    console.log('MongoDB连接成功');
  } catch (error) {
    console.error('MongoDB连接失败:', error);
    process.exit(1);
  }
};

// 清空集合
const clearCollection = async (model) => {
  try {
    await model.deleteMany({});
    console.log(`${model.modelName}集合已清空`);
  } catch (error) {
    console.error(`清空${model.modelName}集合失败:`, error);
  }
};

// 种子数据
const seed = async () => {
  try {
    // 连接数据库
    await connectDB();

    // 导入模型
    const User = require('../models/User');

    // 清空现有数据
    await clearCollection(User);

    // 生成测试数据
    const users = await exportMongooseDocs();

    // 插入数据
    await User.insertMany(users);
    console.log('测试数据插入成功');

    // 输出测试账号信息
    console.log('\n测试账号信息:');
    console.log('管理员账号:');
    console.log('邮箱: admin@kineticx.com');
    console.log('密码: Test123!');
    console.log('\n普通用户账号:');
    users.slice(1).forEach(user => {
      console.log(`邮箱: ${user.email}`);
      console.log('密码: Test123!');
      console.log('---');
    });

    process.exit(0);
  } catch (error) {
    console.error('种子数据插入失败:', error);
    process.exit(1);
  }
};

// 执行种子脚本
seed(); 